PoPL Lecture 9
Revision
- Inductive term cannot be a subterm of itself, but a coinductive term can be.
Bisimulation
-
A quick flashback to term graphs and behaviours \(\sigma\)
-
A motivation for bisimulation: all the terms are intuitively the same
- Bisimilarity establishes equivalence of behavious by examining the structure of the term graph containing two vertices:
- Equivalence of objects is modulo observation
- In case of terms, observations are constructor symbols and we are allowed to look at the head of the term in order to identify the constructor
- Equal terms should have equal heads + equality for corresponding pair of subterms –> Inference rule down, and rule up
- Issues with circular reasoning, however
- Intuitive idea behind bisimulation: just say that the 2 things are equal, and challenge anyone to show a mistake.
- Unlike induction, here you construct an argument and then ask people to pick holes in it. Proof by construction, where it is entirely internally consistent.
- So, for bisimilarity
R
:hd(v) == hd(v')
- for each
i
, \(1 \leq i \leq \alpha (hd(v))\), for alli
: $subterm_i(v), subterm_i(v’) \in R$
-
Non-example
-
Setup for a bisimilarity proof
Demonstration of showing/proof:
-
Setup for a bisimulation break
Proof:
Replacement for inductive terms
- Replace subterm
t'
at positionp
, with sayS
Replacement for coinductive terms